﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Dominio;
using Interfaces;

namespace Obligatorio1
{
    public partial class DisplaySurtidor : Form,IObservador
    {
        private Surtidor _Surtidor;
        private Manguera _SelectedManguera;

        public DisplaySurtidor(Surtidor unSurtidor)
        {
            InitializeComponent();
            _Surtidor = unSurtidor;
        }

        private void DisplaySurtidor_Load(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("Surtidor ");
            sb.Append(_Surtidor.ToString());
            this.Text = sb.ToString();
            CargarMangueras();

        }

        public void Actualizar()
        {
            CargarMangueras();
        }

        private void CargarMangueras()
        {
            
            ISurtidor surtidor = new ImpISurtidor();
            ITanque tanque = new ImpITanque();
            List<Manguera> Mangueras = tanque.ObtenerListaIdsManguerasPorIdSurtidor(_Surtidor);
            List<MangueraInformacion> MangueraInformaciones = new List<MangueraInformacion>();
            
             foreach (Manguera unaManguera in Mangueras)
             {
                int LitrosDisponibles = tanque.ObtenerLitrosDisponiblesTanquePorIdSurtidorYManguera(_Surtidor, unaManguera);
                string tipoCombustible = surtidor.ObtenerTipoCombustiblePorIdSurtidorYManguera(_Surtidor, unaManguera);
                int totalLitrosCargados = tanque.ObtenerTotalLitrosCargados(_Surtidor,unaManguera);
                MangueraInformacion unaMangueraInformacion = new MangueraInformacion(unaManguera, LitrosDisponibles,totalLitrosCargados);
                MangueraInformaciones.Add(unaMangueraInformacion);
                unaManguera.Update();
            }
             BindingSource binding = new BindingSource();
             binding.ResetBindings(false);
             binding.DataSource = MangueraInformaciones;
             ManguerasDataGridView.DataSource = binding;
             ManguerasDataGridView.Update();
             
        }
        #region ClasesPrivadas

        private class MangueraInformacion
        {

            public Manguera Manguera { get; set; }
            public int LitrosDisponibles { get; set; }
            public int LitrosExpendidos {get;set;}
            public MangueraInformacion(Manguera UnaManguera, int CantidadLitros, int LitrosCargados)
            {
                this.Manguera = UnaManguera;
                this.LitrosDisponibles = CantidadLitros;
                this.LitrosExpendidos = LitrosCargados;
            }

        }
        #endregion

        private void manguerasListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (Validar())
            {
                IManejoObservadores observadores = new ImpIManejoObservadores();
                //VentanaExpender ventana = new VentanaExpender(_Surtidor, ((MangueraInformacion)(manguerasListBox.SelectedItem)).IdManguera);
                //ventana.Show();
            }

        }

        private bool Validar()
        {

            if (ManguerasDataGridView.SelectedCells.Count < 1)
            {
                MessageBox.Show("Error. Seleccione una manguera");
                return false;
            }
            else
            {
                return true;
            }
        }

        private void Form1_FormClosing(object sender, EventArgs e)
        {
            IManejoObservadores observadores = new ImpIManejoObservadores();
            observadores.EliminarVentanaObservadoraDeTanques(this);

        }


        private void ManguerasDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (ManguerasDataGridView.SelectedCells.Count > 0)
            {
                this._SelectedManguera = (Manguera)ManguerasDataGridView.SelectedCells[0].Value;
            }
        }

        private void ExpenderButton_Click(object sender, EventArgs e)
        {
                Manguera MangueraSeleccionada = ManguerasDataGridView.SelectedCells[0].Value as Manguera;
                VentanaExpender UnaVentanaExpender = new VentanaExpender(_Surtidor, MangueraSeleccionada);
                UnaVentanaExpender.Show();
        }

    }



}
